로딩 중이에요... 🐣
[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
05 Django 폼(Form) 기초 개념과 예제 | ✅ 편저: 코담 운영자
5강 - Django 폼(Form) 기초 개념과 예제
폼 이란?✨ 이번 강의 목표
- Django 폼(Form)의 필요성과 개념 이해
- HTML
<form>
과의 차이점 파악 - Django
forms.Form
사용 흐름 익히기 - 실제 예제와 함께 핵심 기능 설명
📄 1. Django 폼이란?
Django 폼은 사용자로부터 입력 받은 데이터를 안전하고 편리하게 처리할 수 있도록 도와주는 기능입니다. HTML의 <form>
태그만 사용할 경우 입력 유효성 검사, 보안 처리 등을 직접 구현해야 하지만, Django의 Form
클래스를 사용하면 이 과정을 자동화할 수 있습니다.
✅ HTML 폼과의 차이점
항목 | HTML Form | Django Form |
---|---|---|
유효성 검사 | 수동 구현 필요 | is_valid() 로 자동 처리 |
보안 | CSRF 수동 처리 필요 | {% csrf_token %} + 내장 지원 |
유지보수 | HTML 구조 변경 시 반복 수정 | Python 코드로 관리, 재사용성 높음 |
에러 메시지 | 직접 조건 분기 및 출력 필요 | .errors 속성으로 자동 렌더링 가능 |
Django Form은 HTML 입력 처리의 번거로움을 덜고, 재사용성과 보안성을 높여주는 강력한 도구입니다.
🚀 2. 왜 Django 폼이 필요한가?
- 다양한 입력 타입의 검증이 자동화됨
- 클라이언트/서버 양쪽의 유효성 검사를 간결하게 구현 가능
- 코드 중복 없이 동일한 폼 로직을 여러 뷰에서 재사용 가능
- CSRF 보안 처리가 기본 탑재되어 있음
🧱 3. Django Form 사용 흐름
3.1 forms.py - 폼 클래스 생성
from django import forms
class NameForm(forms.Form):
name = forms.CharField(label='이름', max_length=100)
CharField
:<input type="text">
와 동일label
: 템플릿에서 표시될 폼 필드 라벨명
3.2 views.py - 폼 처리 로직 작성
from django.shortcuts import render
from .forms import NameForm
def name_view(request):
if request.method == "POST":
form = NameForm(request.POST)
if form.is_valid():
name = form.cleaned_data["name"]
return render(request, "thanks.html", {"name": name})
else:
form = NameForm()
return render(request, "name_form.html", {"form": form})
is_valid()
: 폼 입력 값의 유효성 검사cleaned_data
: 검증 통과한 데이터 접근
3.3 name_form.html - 템플릿에서 폼 렌더링
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">제출</button>
</form>
form.as_p
: 각 필드를<p>
태그로 감싸 렌더링{% csrf_token %}
: 보안 필수 처리
에러 메시지를 커스터마이징하거나 개별 필드를 제어하려면 반복문을 활용합니다:
{% for field in form %}
<div>
{{ field.label_tag }}<br>
{{ field }}<br>
{{ field.errors }}
</div>
{% endfor %}
🛠️ 4. Django Form 핵심 메서드 요약
메서드 / 속성 | 설명 |
---|---|
is_valid() |
데이터 유효성 검사. True/False 반환 |
cleaned_data['name'] |
통과된 데이터 접근 |
form.errors |
필드별 에러 메시지 출력 |
add_error(field, msg) |
특정 필드에 수동 에러 추가 |
✅ 5. Django 폼의 장점 요약
- ✅ 코드 간결화: HTML 및 서버 처리 코드 통합 가능
- ✅ 보안 강화: CSRF 보호 및 에러 처리 기본 제공
- ✅ 유지보수 용이: 변경 시 Python 코드만 수정하면 됨
- ✅ 재사용성: 여러 뷰, 여러 폼에서 중복 없이 사용 가능
🧾 정리
- Django 폼은 사용자 입력 데이터를 구조적으로 받고, 유효성 검사와 에러 처리, 보안까지 통합적으로 관리할 수 있는 시스템입니다.
forms.py → views.py → template.html
구조를 기억하세요.form.is_valid()
와form.cleaned_data
는 폼 사용의 핵심입니다.
📌 다음 강의에서는 ModelForm
을 사용한 회원가입 기능을 구현해보겠습니다.